//
// Created by hsj on 2022/1/7.
//
#include <iostream>
#include "ref_struct.h"

//结构体引用【函数局部变量的堆对象正确的返回引用】
void test_ref_struct(){
    using namespace std;
    free_throws t{"hsj is smart!",18,18};
    cout<<"original :"<<t.name<<&t<<endl;
    free_throws tt = test_ref_struct_sub(t);
    cout<<"new heap:"<<tt.name<<&tt<<endl;
}
//函数局部变量的堆对象正确的返回引用
const free_throws & test_ref_struct_sub(free_throws &t){
//    free_throws *pt = NULL;
    free_throws *pt = new free_throws;//堆上面创建一块空间
    *pt = t;//赋值初始化
    pt->name.append("china kunming");//追加字符串
    return *pt;//使用*pt，不是pt。pt局部变量栈函数结束销毁，*pt才是堆上的数据空间
}